InĀ [1]:
import requests as rq
import pandas as pd
import plotly.express as px
import numpy as np
# exibir plots no arquivo html
import plotly
plotly.offline.init_notebook_mode()
InĀ [Ā ]:
# !pip install requests
# !pip install plotly
# !pip install pandas
# !pip install openpyxl # ler excel
# !pip install matplotlib
# ValueError: Mime type rendering requires nbformat>=4.2.0 but it is not installed
# !pip install --upgrade nbformat
# !pip install nbformat
# !pip install jupyter
MORTE DECORRENTE DE INTERVENĆĆO POLICIAL (MDIP)¶
InĀ [3]:
# https://www.ssp.sp.gov.br/estatistica/consultas
url = 'https://www.ssp.sp.gov.br/assets/estatistica/transparencia/spDados/MDIP_2024.xlsx'
dfPolice = pd.read_excel(url)
C:\Users\amtra\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\openpyxl\worksheet\_reader.py:329: UserWarning: Data Validation extension is not supported and will be removed
InĀ [4]:
dfPolice.NATUREZA_APURADA.unique()
Out[4]:
array(['MORTE DECORRENTE DE INTERVENĆĆO POLICIAL'], dtype=object)
Serie Temporal do Num. MDIP¶
InĀ [5]:
dfPlot = dfPolice.loc[dfPolice['SITUAĆĆO']=='ServiƧo',:].groupby('ANO_BO')['ANO_BO'].count()
px.line(dfPlot,title='Num. Mortes Decorrente de Interveção Policial')
Num de MDIP de Acordo com Cor da Pele (Ao longo dos anos)¶
InĀ [6]:
dfPele = dfPolice.groupby(['ANO_BO','COR_PELE'])[['COR_PELE']].count()
dfPele.columns=['NUM']
dfPele = dfPele.reset_index()
dfPele.COR_PELE = dfPele.COR_PELE.apply(lambda x : x.lower())
px.box(dfPele, x='COR_PELE',y='NUM',title='Num de Mortes Decorrente de Intervenção Policial de Acordo com Cor da Pele')
Num de MDIP de Acordo com Idade (Ao longo dos anos)¶
InĀ [7]:
dfIdade = dfPolice.groupby(['ANO_BO','IDADE_PESSOA'])[['IDADE_PESSOA']].count()
dfIdade.columns=['NUM']
dfIdade = dfIdade.reset_index()
px.box(dfIdade, x='IDADE_PESSOA',y='NUM',title='Num de Mortes Decorrente de Intervenção Policial de Acordo com Idade (Variação Anual - Boxplot)')
Num de MDIP de Acordo com Sexo¶
InĀ [8]:
nameCol = 'SEXO_PESSOA'
dfPlot = dfPolice.groupby(['ANO_BO',nameCol])[[nameCol]].count()
dfPlot.columns=['NUM']
dfPlot = dfPlot.reset_index()
dfPlot.loc[:,nameCol] = dfPlot.loc[:,nameCol].apply(lambda x : x.lower())
px.box(dfPlot, x=nameCol,y='NUM',title='Num de Mortes Decorrente de Intervenção Policial de Acordo '+nameCol.replace('_',' ').title()+' (Variação Anual - Boxplot)')
InĀ [9]:
listCol = ['LATITUDE','LONGITUDE','COR_PELE','MUNICIPIO_CIRCUNSCRICAO']
dfPlot = dfPolice.copy()
dfPlot.LONGITUDE = dfPlot.LONGITUDE.apply(lambda x : np.nan if type(x) == type('asd') else x)
dfPlot.LATITUDE = dfPlot.LATITUDE.apply(lambda x : np.nan if type(x) == type('asd') else x)
dfPlot = dfPlot.dropna(subset=['LATITUDE','LONGITUDE','COR_PELE'])
mask1 = dfPlot.LATITUDE !=0
mask2 = dfPlot.LONGITUDE !=0
mask = mask1 & mask2
dfPlot = dfPlot.loc[mask,listCol]
dfPlot = dfPlot.reset_index(drop=True)
InĀ [10]:
dfPlot.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 6509 entries, 0 to 6508 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 LATITUDE 6509 non-null float64 1 LONGITUDE 6509 non-null float64 2 COR_PELE 6509 non-null object 3 MUNICIPIO_CIRCUNSCRICAO 6509 non-null object dtypes: float64(2), object(2) memory usage: 203.5+ KB
InĀ [11]:
dfPlot.shape
Out[11]:
(6509, 4)
Mapa de MDIP¶
InĀ [12]:
# scatter_map possui limitação de tamanho do dataframe até 6000 funcionou jÔ 6500 não
fig = px.scatter_map(dfPlot.iloc[0:6000,:], lat="LATITUDE", lon="LONGITUDE",
color = 'COR_PELE',
hover_name="MUNICIPIO_CIRCUNSCRICAO", hover_data=["COR_PELE"] , zoom=10, height=300)
fig.update_layout(map_style="open-street-map")
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
fig.show()
InĀ [13]:
# =============================================================================
#
#
# https://www.ssp.sp.gov.br/assets/estatistica/transparencia/baseDados/celularesSub/CelularesSubtraidos_2024.xlsx
#
#
# https://www.ssp.sp.gov.br/assets/estatistica/transparencia/baseDados/veiculosSub/VeiculosSubtraidos_2024.xlsx
#
#
# https://www.ssp.sp.gov.br/assets/estatistica/transparencia/spDados/SPDadosCriminais_2024.xlsx
#
#
# https://www.ssp.sp.gov.br/assets/estatistica/transparencia/spDados/DadosProdutividade_2024.xlsx
#
#
# =============================================================================